{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入类库\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from pandas import read_csv\n",
    "from pandas.plotting import scatter_matrix\n",
    "from pandas import set_option\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.ensemble import ExtraTreesClassifier\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "import random\n",
    "# import numpy as np\n",
    "# import matplotlib as mpl\n",
    "# from numpy import arange\n",
    "# from pandas import set_option\n",
    "# from sklearn.linear_model import LinearRegression\n",
    "# from sklearn.linear_model import Lasso\n",
    "# from sklearn.linear_model import ElasticNet\n",
    "# from sklearn.tree import DecisionTreeRegressor\n",
    "# from sklearn.ensemble import RandomForestRegressor\n",
    "# from sklearn.ensemble import GradientBoostingRegressor\n",
    "# from sklearn.ensemble import ExtraTreesRegressor\n",
    "# from sklearn.ensemble import AdaBoostRegressor\n",
    "# from sklearn.metrics import mean_squared_error\n",
    "# import warnings\n",
    "# warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入数据\n",
    "filename='sonar.all-data.csv'\n",
    "dataset=read_csv(filename,header=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(208, 61)\n"
     ]
    }
   ],
   "source": [
    "# 数据维度\n",
    "print(dataset.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0     float64\n",
      "1     float64\n",
      "2     float64\n",
      "3     float64\n",
      "4     float64\n",
      "5     float64\n",
      "6     float64\n",
      "7     float64\n",
      "8     float64\n",
      "9     float64\n",
      "10    float64\n",
      "11    float64\n",
      "12    float64\n",
      "13    float64\n",
      "14    float64\n",
      "15    float64\n",
      "16    float64\n",
      "17    float64\n",
      "18    float64\n",
      "19    float64\n",
      "20    float64\n",
      "21    float64\n",
      "22    float64\n",
      "23    float64\n",
      "24    float64\n",
      "25    float64\n",
      "26    float64\n",
      "27    float64\n",
      "28    float64\n",
      "29    float64\n",
      "30    float64\n",
      "31    float64\n",
      "32    float64\n",
      "33    float64\n",
      "34    float64\n",
      "35    float64\n",
      "36    float64\n",
      "37    float64\n",
      "38    float64\n",
      "39    float64\n",
      "40    float64\n",
      "41    float64\n",
      "42    float64\n",
      "43    float64\n",
      "44    float64\n",
      "45    float64\n",
      "46    float64\n",
      "47    float64\n",
      "48    float64\n",
      "49    float64\n",
      "50    float64\n",
      "51    float64\n",
      "52    float64\n",
      "53    float64\n",
      "54    float64\n",
      "55    float64\n",
      "56    float64\n",
      "57    float64\n",
      "58    float64\n",
      "59    float64\n",
      "60     object\n",
      "dtype: object\n"
     ]
    }
   ],
   "source": [
    "# 查看数据类型\n",
    "set_option('display.max_rows',500)\n",
    "print(dataset.dtypes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "        0       1       2       3       4       5       6       7       8       9   ...      51  \\\n",
      "0   0.0200  0.0371  0.0428  0.0207  0.0954  0.0986  0.1539  0.1601  0.3109  0.2111  ...  0.0027   \n",
      "1   0.0453  0.0523  0.0843  0.0689  0.1183  0.2583  0.2156  0.3481  0.3337  0.2872  ...  0.0084   \n",
      "2   0.0262  0.0582  0.1099  0.1083  0.0974  0.2280  0.2431  0.3771  0.5598  0.6194  ...  0.0232   \n",
      "3   0.0100  0.0171  0.0623  0.0205  0.0205  0.0368  0.1098  0.1276  0.0598  0.1264  ...  0.0121   \n",
      "4   0.0762  0.0666  0.0481  0.0394  0.0590  0.0649  0.1209  0.2467  0.3564  0.4459  ...  0.0031   \n",
      "5   0.0286  0.0453  0.0277  0.0174  0.0384  0.0990  0.1201  0.1833  0.2105  0.3039  ...  0.0045   \n",
      "6   0.0317  0.0956  0.1321  0.1408  0.1674  0.1710  0.0731  0.1401  0.2083  0.3513  ...  0.0201   \n",
      "7   0.0519  0.0548  0.0842  0.0319  0.1158  0.0922  0.1027  0.0613  0.1465  0.2838  ...  0.0081   \n",
      "8   0.0223  0.0375  0.0484  0.0475  0.0647  0.0591  0.0753  0.0098  0.0684  0.1487  ...  0.0145   \n",
      "9   0.0164  0.0173  0.0347  0.0070  0.0187  0.0671  0.1056  0.0697  0.0962  0.0251  ...  0.0090   \n",
      "10  0.0039  0.0063  0.0152  0.0336  0.0310  0.0284  0.0396  0.0272  0.0323  0.0452  ...  0.0062   \n",
      "11  0.0123  0.0309  0.0169  0.0313  0.0358  0.0102  0.0182  0.0579  0.1122  0.0835  ...  0.0133   \n",
      "12  0.0079  0.0086  0.0055  0.0250  0.0344  0.0546  0.0528  0.0958  0.1009  0.1240  ...  0.0176   \n",
      "13  0.0090  0.0062  0.0253  0.0489  0.1197  0.1589  0.1392  0.0987  0.0955  0.1895  ...  0.0059   \n",
      "14  0.0124  0.0433  0.0604  0.0449  0.0597  0.0355  0.0531  0.0343  0.1052  0.2120  ...  0.0083   \n",
      "15  0.0298  0.0615  0.0650  0.0921  0.1615  0.2294  0.2176  0.2033  0.1459  0.0852  ...  0.0031   \n",
      "16  0.0352  0.0116  0.0191  0.0469  0.0737  0.1185  0.1683  0.1541  0.1466  0.2912  ...  0.0346   \n",
      "17  0.0192  0.0607  0.0378  0.0774  0.1388  0.0809  0.0568  0.0219  0.1037  0.1186  ...  0.0331   \n",
      "18  0.0270  0.0092  0.0145  0.0278  0.0412  0.0757  0.1026  0.1138  0.0794  0.1520  ...  0.0084   \n",
      "19  0.0126  0.0149  0.0641  0.1732  0.2565  0.2559  0.2947  0.4110  0.4983  0.5920  ...  0.0092   \n",
      "\n",
      "        52      53      54      55      56      57      58      59  60  \n",
      "0   0.0065  0.0159  0.0072  0.0167  0.0180  0.0084  0.0090  0.0032   R  \n",
      "1   0.0089  0.0048  0.0094  0.0191  0.0140  0.0049  0.0052  0.0044   R  \n",
      "2   0.0166  0.0095  0.0180  0.0244  0.0316  0.0164  0.0095  0.0078   R  \n",
      "3   0.0036  0.0150  0.0085  0.0073  0.0050  0.0044  0.0040  0.0117   R  \n",
      "4   0.0054  0.0105  0.0110  0.0015  0.0072  0.0048  0.0107  0.0094   R  \n",
      "5   0.0014  0.0038  0.0013  0.0089  0.0057  0.0027  0.0051  0.0062   R  \n",
      "6   0.0248  0.0131  0.0070  0.0138  0.0092  0.0143  0.0036  0.0103   R  \n",
      "7   0.0120  0.0045  0.0121  0.0097  0.0085  0.0047  0.0048  0.0053   R  \n",
      "8   0.0128  0.0145  0.0058  0.0049  0.0065  0.0093  0.0059  0.0022   R  \n",
      "9   0.0223  0.0179  0.0084  0.0068  0.0032  0.0035  0.0056  0.0040   R  \n",
      "10  0.0120  0.0052  0.0056  0.0093  0.0042  0.0003  0.0053  0.0036   R  \n",
      "11  0.0265  0.0224  0.0074  0.0118  0.0026  0.0092  0.0009  0.0044   R  \n",
      "12  0.0127  0.0088  0.0098  0.0019  0.0059  0.0058  0.0059  0.0032   R  \n",
      "13  0.0095  0.0194  0.0080  0.0152  0.0158  0.0053  0.0189  0.0102   R  \n",
      "14  0.0057  0.0174  0.0188  0.0054  0.0114  0.0196  0.0147  0.0062   R  \n",
      "15  0.0153  0.0071  0.0212  0.0076  0.0152  0.0049  0.0200  0.0073   R  \n",
      "16  0.0158  0.0154  0.0109  0.0048  0.0095  0.0015  0.0073  0.0067   R  \n",
      "17  0.0131  0.0120  0.0108  0.0024  0.0045  0.0037  0.0112  0.0075   R  \n",
      "18  0.0010  0.0018  0.0068  0.0039  0.0120  0.0132  0.0070  0.0088   R  \n",
      "19  0.0035  0.0098  0.0121  0.0006  0.0181  0.0094  0.0116  0.0063   R  \n",
      "\n",
      "[20 rows x 61 columns]\n"
     ]
    }
   ],
   "source": [
    "# 查看最初的20条记录\n",
    "set_option('display.width',100)\n",
    "print(dataset.head(20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            0          1        2        3        4        5        6        7        8        9   \\\n",
      "count  208.000  2.080e+02  208.000  208.000  208.000  208.000  208.000  208.000  208.000  208.000   \n",
      "mean     0.029  3.844e-02    0.044    0.054    0.075    0.105    0.122    0.135    0.178    0.208   \n",
      "std      0.023  3.296e-02    0.038    0.047    0.056    0.059    0.062    0.085    0.118    0.134   \n",
      "min      0.002  6.000e-04    0.002    0.006    0.007    0.010    0.003    0.005    0.007    0.011   \n",
      "25%      0.013  1.645e-02    0.019    0.024    0.038    0.067    0.081    0.080    0.097    0.111   \n",
      "50%      0.023  3.080e-02    0.034    0.044    0.062    0.092    0.107    0.112    0.152    0.182   \n",
      "75%      0.036  4.795e-02    0.058    0.065    0.100    0.134    0.154    0.170    0.233    0.269   \n",
      "max      0.137  2.339e-01    0.306    0.426    0.401    0.382    0.373    0.459    0.683    0.711   \n",
      "\n",
      "       ...       50         51         52       53         54         55         56         57  \\\n",
      "count  ...  208.000  2.080e+02  2.080e+02  208.000  2.080e+02  2.080e+02  2.080e+02  2.080e+02   \n",
      "mean   ...    0.016  1.342e-02  1.071e-02    0.011  9.290e-03  8.222e-03  7.820e-03  7.949e-03   \n",
      "std    ...    0.012  9.634e-03  7.060e-03    0.007  7.088e-03  5.736e-03  5.785e-03  6.470e-03   \n",
      "min    ...    0.000  8.000e-04  5.000e-04    0.001  6.000e-04  4.000e-04  3.000e-04  3.000e-04   \n",
      "25%    ...    0.008  7.275e-03  5.075e-03    0.005  4.150e-03  4.400e-03  3.700e-03  3.600e-03   \n",
      "50%    ...    0.014  1.140e-02  9.550e-03    0.009  7.500e-03  6.850e-03  5.950e-03  5.800e-03   \n",
      "75%    ...    0.021  1.673e-02  1.490e-02    0.015  1.210e-02  1.058e-02  1.043e-02  1.035e-02   \n",
      "max    ...    0.100  7.090e-02  3.900e-02    0.035  4.470e-02  3.940e-02  3.550e-02  4.400e-02   \n",
      "\n",
      "              58         59  \n",
      "count  2.080e+02  2.080e+02  \n",
      "mean   7.941e-03  6.507e-03  \n",
      "std    6.181e-03  5.031e-03  \n",
      "min    1.000e-04  6.000e-04  \n",
      "25%    3.675e-03  3.100e-03  \n",
      "50%    6.400e-03  5.300e-03  \n",
      "75%    1.033e-02  8.525e-03  \n",
      "max    3.640e-02  4.390e-02  \n",
      "\n",
      "[8 rows x 60 columns]\n"
     ]
    }
   ],
   "source": [
    "# 描述性统计信息\n",
    "set_option('precision',3)\n",
    "print(dataset.describe())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "60\n",
      "M    111\n",
      "R     97\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 数据的类型分布\n",
    "print(dataset.groupby(60).size())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 64 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 直方图\n",
    "dataset.hist(sharex=False,sharey=False,xlabelsize=1,ylabelsize=1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 64 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 密度图\n",
    "dataset.plot(kind='density',subplots=True,layout=(8,8),sharex=False,legend=False,fontsize=1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 关系矩阵图\n",
    "fig=plt.figure()\n",
    "ax=fig.add_subplot(111)\n",
    "cax=ax.matshow(dataset.corr(),vmin=-1,vmax=1,interpolation='none')\n",
    "fig.colorbar(cax)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 分离评估数据集\n",
    "array=dataset.values\n",
    "X=array[:,0:60].astype(float)\n",
    "Y=array[:,60]\n",
    "validation_size=0.2\n",
    "seed=7\n",
    "X_train,X_validation,Y_train,Y_validation=train_test_split(X,Y,test_size=validation_size,random_state=seed)\n",
    "\n",
    "# 评估算法的基准\n",
    "num_folds=10\n",
    "seed=7\n",
    "scording='accuracy'\n",
    "\n",
    "# 评估算法-原始数据\n",
    "models={}\n",
    "models['LR']=LogisticRegression()\n",
    "models['LDA']=LinearDiscriminantAnalysis()\n",
    "models['KNN']=KNeighborsClassifier()\n",
    "models['CART']=DecisionTreeClassifier()\n",
    "models['NB']=GaussianNB()\n",
    "models['SVM']=SVC()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LR: 0.769485(0.100510)\n",
      "LDA: 0.746324(0.117854)\n",
      "KNN: 0.808088(0.067507)\n",
      "CART: 0.734926(0.068039)\n",
      "NB: 0.648897(0.141868)\n",
      "SVM: 0.776471(0.090411)\n"
     ]
    }
   ],
   "source": [
    "# random.shuffle(True)\n",
    "\n",
    "# # 默认参数比较算法\n",
    "# results=[]\n",
    "# for key in models:\n",
    "#     kfold=KFold(n_splits=num_folds,random_state=seed)\n",
    "#     cv_results=cross_val_score(models[key],X_train,Y_train,cv=kfold,scoring=scording)\n",
    "#     results.append(cv_results)\n",
    "#     print('%s:%f(%f)'%(key,cv_results.mean(),cv_results.std()))\n",
    "\n",
    "# 评估算法\n",
    "results = []\n",
    "for key in models:\n",
    "    kfold = KFold(n_splits=num_folds,random_state=seed)\n",
    "    cv_result = cross_val_score(models[key],X_train,Y_train,cv = kfold,scoring=scording)\n",
    "    results.append(cv_result)\n",
    "    print('%s: %f(%f)'%(key,cv_result.mean(),cv_result.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 箱线图显示数据的分布状况\n",
    "fig=plt.figure()\n",
    "fig.suptitle('Algorithm Comparision')\n",
    "ax=fig.add_subplot(111)\n",
    "plt.boxplot(results)\n",
    "ax.set_xticklabels(models.keys())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ScalerLR:0.740441(0.094668)\n",
      "ScalerLDA:0.746324(0.117854)\n",
      "ScalerKNN:0.825735(0.054511)\n",
      "ScalerCART:0.722426(0.122524)\n",
      "ScalerNB:0.822794(0.140927)\n",
      "ScalerSVM:0.836397(0.088697)\n"
     ]
    }
   ],
   "source": [
    "# 评估算法-正态化数据\n",
    "pipelines={}\n",
    "pipelines['ScalerLR']=Pipeline([('Scaler',StandardScaler()),('LR',LogisticRegression())])\n",
    "pipelines['ScalerLDA']=Pipeline([('Scaler',StandardScaler()),('LDA',LinearDiscriminantAnalysis())])\n",
    "pipelines['ScalerKNN']=Pipeline([('Scaler',StandardScaler()),('KNN',KNeighborsClassifier())])\n",
    "pipelines['ScalerCART']=Pipeline([('Scaler',StandardScaler()),('CART',DecisionTreeClassifier())])\n",
    "pipelines['ScalerNB']=Pipeline([('Scaler',StandardScaler()),('NB',GradientBoostingClassifier())])\n",
    "pipelines['ScalerSVM']=Pipeline([('Scaler',StandardScaler()),('SVM',SVC())])\n",
    "results=[]\n",
    "for key in pipelines:\n",
    "    kfold=KFold(n_splits=num_folds,random_state=seed)\n",
    "    cv_results=cross_val_score(pipelines[key],X_train,Y_train,cv=kfold,scoring=scording)\n",
    "    results.append(cv_results)\n",
    "    print('%s:%f(%f)'%(key,cv_results.mean(),cv_results.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 箱线图显示数据的分布状况\n",
    "fig=plt.figure()\n",
    "fig.suptitle('Scaled Algorithm Comparision')\n",
    "ax=fig.add_subplot(111)\n",
    "plt.boxplot(results)\n",
    "ax.set_xticklabels(models.keys())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最优:0.85使用{'n_neighbors': 1}\n",
      "0.850000(0.059686) with {'n_neighbors': 1}\n",
      "0.837132(0.066014) with {'n_neighbors': 3}\n",
      "0.837500(0.037377) with {'n_neighbors': 5}\n",
      "0.763971(0.089374) with {'n_neighbors': 7}\n",
      "0.751471(0.087051) with {'n_neighbors': 9}\n",
      "0.733456(0.104831) with {'n_neighbors': 11}\n",
      "0.733088(0.105806) with {'n_neighbors': 13}\n",
      "0.727941(0.076148) with {'n_neighbors': 15}\n",
      "0.709926(0.079287) with {'n_neighbors': 17}\n",
      "0.722059(0.085088) with {'n_neighbors': 19}\n",
      "0.710294(0.109505) with {'n_neighbors': 21}\n"
     ]
    }
   ],
   "source": [
    "# 调参改进算法-KNN\n",
    "scaler=StandardScaler().fit(X_train)\n",
    "rescaledX=scaler.transform(X_train)\n",
    "param_grid={'n_neighbors':[1,3,5,7,9,11,13,15,17,19,21]}\n",
    "model=KNeighborsClassifier()\n",
    "kfold=KFold(n_splits=num_folds,random_state=seed)\n",
    "grid=GridSearchCV(estimator=model,param_grid=param_grid,scoring=scording,cv=kfold)\n",
    "grid_result=grid.fit(X=rescaledX,y=Y_train)\n",
    "\n",
    "print('最优:%s使用%s'%(grid_result.best_score_,grid_result.best_params_))\n",
    "cv_results=zip(grid_result.cv_results_['mean_test_score'],grid_result.cv_results_['std_test_score'],grid_result.cv_results_['params'])\n",
    "for mean,std,param in cv_results:\n",
    "    print('%f(%f) with %r'%(mean,std,param))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最优:0.8724264705882353使用{'C': 2.0, 'kernel': 'rbf'}\n",
      "0.758456(0.099483) with {'C': 0.1, 'kernel': 'linear'}\n",
      "0.535294(0.114222) with {'C': 0.1, 'kernel': 'poly'}\n",
      "0.573162(0.130930) with {'C': 0.1, 'kernel': 'rbf'}\n",
      "0.704044(0.066933) with {'C': 0.1, 'kernel': 'sigmoid'}\n",
      "0.746324(0.109507) with {'C': 0.3, 'kernel': 'linear'}\n",
      "0.642647(0.132187) with {'C': 0.3, 'kernel': 'poly'}\n",
      "0.765809(0.091692) with {'C': 0.3, 'kernel': 'rbf'}\n",
      "0.734926(0.054567) with {'C': 0.3, 'kernel': 'sigmoid'}\n",
      "0.740074(0.082636) with {'C': 0.5, 'kernel': 'linear'}\n",
      "0.662132(0.105668) with {'C': 0.5, 'kernel': 'poly'}\n",
      "0.788235(0.064190) with {'C': 0.5, 'kernel': 'rbf'}\n",
      "0.746691(0.058742) with {'C': 0.5, 'kernel': 'sigmoid'}\n",
      "0.746691(0.084198) with {'C': 0.7, 'kernel': 'linear'}\n",
      "0.746324(0.129754) with {'C': 0.7, 'kernel': 'poly'}\n",
      "0.812500(0.085513) with {'C': 0.7, 'kernel': 'rbf'}\n",
      "0.758824(0.047088) with {'C': 0.7, 'kernel': 'sigmoid'}\n",
      "0.758824(0.096520) with {'C': 0.9, 'kernel': 'linear'}\n",
      "0.769853(0.111321) with {'C': 0.9, 'kernel': 'poly'}\n",
      "0.836397(0.088697) with {'C': 0.9, 'kernel': 'rbf'}\n",
      "0.752941(0.074130) with {'C': 0.9, 'kernel': 'sigmoid'}\n",
      "0.752574(0.098883) with {'C': 1.0, 'kernel': 'linear'}\n",
      "0.781985(0.101194) with {'C': 1.0, 'kernel': 'poly'}\n",
      "0.836397(0.088697) with {'C': 1.0, 'kernel': 'rbf'}\n",
      "0.752574(0.070872) with {'C': 1.0, 'kernel': 'sigmoid'}\n",
      "0.769853(0.106086) with {'C': 1.3, 'kernel': 'linear'}\n",
      "0.818382(0.107151) with {'C': 1.3, 'kernel': 'poly'}\n",
      "0.848162(0.080414) with {'C': 1.3, 'kernel': 'rbf'}\n",
      "0.722794(0.072066) with {'C': 1.3, 'kernel': 'sigmoid'}\n",
      "0.758088(0.092026) with {'C': 1.5, 'kernel': 'linear'}\n",
      "0.830147(0.110255) with {'C': 1.5, 'kernel': 'poly'}\n",
      "0.866176(0.091458) with {'C': 1.5, 'kernel': 'rbf'}\n",
      "0.728309(0.078171) with {'C': 1.5, 'kernel': 'sigmoid'}\n",
      "0.746324(0.090414) with {'C': 1.7, 'kernel': 'linear'}\n",
      "0.830515(0.116706) with {'C': 1.7, 'kernel': 'poly'}\n",
      "0.860294(0.088281) with {'C': 1.7, 'kernel': 'rbf'}\n",
      "0.715441(0.089652) with {'C': 1.7, 'kernel': 'sigmoid'}\n",
      "0.758456(0.094064) with {'C': 2.0, 'kernel': 'linear'}\n",
      "0.824632(0.118381) with {'C': 2.0, 'kernel': 'poly'}\n",
      "0.872426(0.097562) with {'C': 2.0, 'kernel': 'rbf'}\n",
      "0.733456(0.090179) with {'C': 2.0, 'kernel': 'sigmoid'}\n"
     ]
    }
   ],
   "source": [
    "# 调参改进算法\n",
    "scaler=StandardScaler().fit(X_train)\n",
    "rescaledX=scaler.transform(X_train).astype(float)\n",
    "param_grid={}\n",
    "param_grid['C']=[0.1,0.3,0.5,0.7,0.9,1.0,1.3,1.5,1.7,2.0]\n",
    "param_grid['kernel']=['linear','poly','rbf','sigmoid']\n",
    "model=SVC()\n",
    "kfold=KFold(n_splits=num_folds,random_state=seed)\n",
    "grid=GridSearchCV(estimator=model,param_grid=param_grid,scoring=scording,cv=kfold)\n",
    "grid_result=grid.fit(X=rescaledX,y=Y_train)\n",
    "\n",
    "print('最优:%s使用%s'%(grid_result.best_score_,grid_result.best_params_))\n",
    "cv_results=zip(grid_result.cv_results_['mean_test_score'],grid_result.cv_results_['std_test_score'],grid_result.cv_results_['params'])\n",
    "for mean,std,param in cv_results:\n",
    "    print('%f(%f) with %r'%(mean,std,param))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ScaledAB:0.819853(0.058293)\n",
      "ScaledGBM:0.847426(0.108219)\n",
      "ScaledRF:0.800368(0.074878)\n",
      "ScaledET:0.848162(0.105931)\n"
     ]
    }
   ],
   "source": [
    "# 集成算法\n",
    "ensembles={}\n",
    "ensembles['ScaledAB']=Pipeline([('Scaler',StandardScaler()),('AB',AdaBoostClassifier())])\n",
    "ensembles['ScaledGBM']=Pipeline([('Scaler',StandardScaler()),('GBM',GradientBoostingClassifier())])\n",
    "ensembles['ScaledRF']=Pipeline([('Scaler',StandardScaler()),('RFR',RandomForestClassifier())])\n",
    "ensembles['ScaledET']=Pipeline([('Scaler',StandardScaler()),('ETR',ExtraTreesClassifier())])\n",
    "\n",
    "results=[]\n",
    "for key in ensembles:\n",
    "    kfold=KFold(n_splits=num_folds,random_state=seed)\n",
    "    cv_results=cross_val_score(ensembles[key],X_train,Y_train,cv=kfold,scoring=scording)\n",
    "    results.append(cv_results)\n",
    "    print('%s:%f(%f)'%(key,cv_results.mean(),cv_results.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 集成算法-箱线图\n",
    "fig=plt.figure()\n",
    "fig.suptitle('Algorithm Comparison')\n",
    "ax=fig.add_subplot(111)\n",
    "plt.boxplot(results)\n",
    "ax.set_xticklabels(ensembles.keys())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最优:0.8720588235294118使用{'n_estimators': 300}\n"
     ]
    }
   ],
   "source": [
    "# 集成算法GBM-调参\n",
    "# random.shuffle()=True\n",
    "scaler=StandardScaler().fit(X_train)\n",
    "rescaledX=scaler.transform(X_train)\n",
    "param_grid={'n_estimators':[10,50,100,200,300,400,500,600,700,800,900]}\n",
    "model=GradientBoostingClassifier()\n",
    "kfold=KFold(n_splits=num_folds,random_state=seed)\n",
    "grid=GridSearchCV(estimator=model,param_grid=param_grid,scoring=scording,cv=kfold)\n",
    "grid_result=grid.fit(X=rescaledX,y=Y_train)\n",
    "print('最优:%s使用%s'%(grid_result.best_score_,grid_result.best_params_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8571428571428571\n",
      "[[23  4]\n",
      " [ 2 13]]\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           M       0.92      0.85      0.88        27\n",
      "           R       0.76      0.87      0.81        15\n",
      "\n",
      "    accuracy                           0.86        42\n",
      "   macro avg       0.84      0.86      0.85        42\n",
      "weighted avg       0.86      0.86      0.86        42\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 模型最终化\n",
    "scaler=StandardScaler().fit(X_train)\n",
    "rescaledX=scaler.transform(X_train)\n",
    "model=SVC(C=1.5,kernel='rbf')\n",
    "model.fit(X=rescaledX,y=Y_train)\n",
    "\n",
    "# 评估模型\n",
    "rescaled_validationX=scaler.transform(X_validation)\n",
    "predictions=model.predict(rescaled_validationX)\n",
    "print(accuracy_score(Y_validation,predictions))\n",
    "print(confusion_matrix(Y_validation,predictions))\n",
    "print(classification_report(Y_validation,predictions))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
